package cn.csc.module.pay.controller.admin.drawcash.vo;

import lombok.*;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import io.swagger.annotations.*;
import cn.csc.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.csc.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
import static cn.csc.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@ApiModel("管理后台 - 提款申请记录分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PayDrawCashPageReqVO extends PageParam {

    @ApiModelProperty(value = "商户编号")
    private BigInteger merchantId;

    @ApiModelProperty(value = "外部商户ID")
    private String appUserId;

    @ApiModelProperty(value = "提款类型 ,1个人，2公司")
    private Integer drawType;

    @ApiModelProperty(value = "商户生成提款流水号")
    private String serialNo;

    @ApiModelProperty(value = "本地系统生成的流水号")
    private String drawNo;

    @ApiModelProperty(value = "见证宝返回提款流水号")
    private String serialSeq;

    @ApiModelProperty(value = "打款时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] payDate;

    @ApiModelProperty(value = "银行卡姓名")
    private String acctName;

    @ApiModelProperty(value = "会员证件类型")
    private String memberGlobalType;

    @ApiModelProperty(value = "会员证件号码")
    private String memberGlobalId;

    @ApiModelProperty(value = "银行卡号")
    private String memberAcctNo;

    @ApiModelProperty(value = "提款金额")
    private BigDecimal amount;

    @ApiModelProperty(value = "提款描述")
    private String body;

    @ApiModelProperty(value = "状态(0:待提现 1:提款成功,2:提款失败,3:提现中或者新建,4:取消提款,5:退单)")
    private Integer status;

    @ApiModelProperty(value = "提现手续费用")
    private BigDecimal handFee;

    @ApiModelProperty(value = "提现描述信息(记录提现异常消息)")
    private String drawMsg;

    @ApiModelProperty(value = "定时状态")
    private Integer taskStatus;

    @ApiModelProperty(value = "定时失败次数")
    private int taskNum;

    @ApiModelProperty(value = "提现时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDate taskTime;

    @ApiModelProperty(value = "创建时间,申请提款时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

}
